package com.hsh.acte 
{
	import com.hsh.graph.Etat;
	import flash.events.MouseEvent;
	import flash.geom.Point;
	/**
	 * Action souris générique appliquée à un visuel
	 * @author Jean-Marie@home
	 */
	public class Souris extends Action
	{
		protected var _hit:Point;// point d'impact

		/**
		 * Evénement souris générique
		 * @param	actif	actif à gérer
		 * @param	callback	réaction(a:actif, e:MouseEvent) à l'événement
		 * @param	typeSouris	type d'événement souris géré
		 */
		public function Souris(actif:Actif, callback:Function, typeSouris:String) 
		{
			super(actif, surSouris);
			action = callback;
			type = typeSouris;
			activer();
		}
		
		private function surSouris(e:MouseEvent):void 
		{
			e.stopImmediatePropagation();
			e.stopPropagation();
			
			_hit = new Point(a.sourisX, a.sourisY);
			
			switch (e.type) 
			{
				case MouseEvent.RIGHT_CLICK:
					a.etat = Etat.CLIC_DROIT;
				break;
				case MouseEvent.MOUSE_WHEEL:
					a.etat = Etat.MOLETTE;
				break;
				case MouseEvent.MOUSE_DOWN:
					a.etat = Etat.ENFONCEMENT;
				break;
				case MouseEvent.MOUSE_UP:
					a.etat = Etat.RELACHEMENT;
				break;
				case MouseEvent.ROLL_OVER:
					a.etat = Etat.SURVOL;
				break;
				case MouseEvent.ROLL_OUT:
					a.etat = Etat.SORTIE;
				break;
				case MouseEvent.CLICK:
					a.etat = Etat.CLIC;
				break;
				default:
			}
			
			action(a, e);
		}
		
		/**
		 * Point d'impact
		 */
		public function get hit():Point 
		{
			return _hit;
		}
	}
}